home *** CD-ROM | disk | FTP | other *** search
- INTRODUCTION:
- -------------
-
- This document describes (in some detail, though undoubtedly not enough!)
- the sendmail configuration files currently in use at Berkeley as distributed
- with version 5.61 of sendmail. It discusses the configuration file
- directory hierarchy, how the files are processed by m4(1), what functionality
- the files provide, what m4(1) options can be used to produce specific
- results, and goes through an example or two. It concludes with a list
- of things that will change in the next release of the configuration files.
-
- This is a working draft; your comments are appreciated. Please send your
- suggestions to Phil Lapsley, phil@ucbvax.berkeley.edu, ...!ucbvax!phil.
-
-
- HIERARCHY:
- ----------
-
- The "cf" subdirectory is organized as follows:
-
- cf
- |
- +---------------+---------------+
- | | |
- sitedep m4 cf
- | | / \
- *.m4 *.m4 *.mc *.cf
-
- where the directories contain the following:
-
- sitedep Site dependent parts of configuration files
- in m4(1) include files.
-
- m4 Site independent parts of configuration files
- in m4(1) include files.
-
- cf Includes "master configuration" (.mc) files
- that include m4 files from ../m4 and ../sitedep.
- .mc files are processed by m4(1) and result in
- configuration files (.cf).
-
- In the remainder of this document, all path names are referenced
- relative to the top level "cf" directory. Hence, the m4 subdirectory
- is called "cf/m4".
-
-
- WHERE m4(1) FITS INTO ALL OF THIS:
- ----------------------------------
-
- Configuration files are built by typing "make" in cf/cf. This
- runs m4(1) on the .mc files in cf/cf and produces .cf files.
-
- The philosophy at Berkeley is to place as much information into
- one .mc file as possible, and then use m4 conditional substitution
- (ifdef, for example) to produce other configuration files from it.
- This results in a substantial reduction of duplicated code that must
- be maintained separately.
-
- The main master configuration file that contains all this information
- is "cf/proto.mc". This file has a number of m4 conditional substitutions
- that can be controlled by other .mc files that include "cf/proto.mc".
-
- For example, most hosts at Berkeley have only SMTP (TCP) connections
- to other hosts. A file called "ucbproto.cf" takes care of these
- machines by defining the m4 flags needed to produce only SMTP mailer
- definitions from "cf/proto.mc". Since this is default behavior, very
- little needs to be defined.
-
- But some hosts at Berkeley (e.g., cad.Berkeley.EDU) have both SMTP
- connections and UUCP connections as well. Thus, they need to
- produce a configuration file that contains both SMTP and UUCP mailer
- definitions, and they need to include a list of directly connected
- UUCP neighbors. The file "cf/cad.mc" does this by setting the m4
- flags for "cf/proto.mc" that say "(1) I am a UUCP host with hostname "ucbcad",
- (2) a list of my UUCP neighbors can be found in ../sitedep/uucp.cad.m4".
-
- Thus, there are many .mc files in cf/cf that simply define m4 flags and
- then include "cf/proto.mc" to produce a specific configuration file.
-
- Note:
-
- IT IS STRONGLY SUGGESTED THAT YOU, THE SYSTEM MANAGER,
- CONTINUE TO MAINTAIN CONFIGURATION FILES BY USING THIS
- m4(1) METHOD. TRYING TO MAINTAIN MULTIPLE .CF FILES
- ON SEPARATE MACHINES WILL LEAD TO INSANITY.
-
-
- With that out of the way, we should now examine the functionality
- provided by the supplied sendmail configuration files, and then
- talk in detail about the m4(1) options that control this.
-
- FUNCTIONALITY PROVIDED BY THE SUPPLIED SENDMAIL CONFIGURATIONS:
- ---------------------------------------------------------------
-
- Mailers:
- --------
-
- The sendmail configuration files come with the following mailers:
-
- local For delivery of messages to users on the
- local machine.
-
- tcp For SMTP delivery of messages across the
- the Internet.
-
- tcpld For SMTP delivery of messages within the
- local domain.
-
- uucp For delivery of messages to a UUCP neighbor.
-
- smtpuucp For delivery of messages to a UUCP neighbor
- with whom we also share Internet connectivity.
-
- The tcp/tcpld mailers and the smtpuucp mailers deserve a little more
- explanation.
-
- The "tcp" and "tcpld" mailers:
- ------------------------------
-
- As regards tcp and tcpld: in theory, there should be only one mailer
- here, called "smtp", that deals with addresses in the form "user@host.domain".
- Everyone on the Internet would use this, regardless of what domain
- they were in. Host name lookups would be performed via the domain naming
- system (DNS), and no central registry of machine names would be necessary.
-
- Unfortunately, this is not the case. The MILNET community is still
- in transition towards the DNS, and until this transition is complete,
- they do not have to use the nameserver. Rather, they can "legally"
- still use the host table supplied by SRI-NIC to translate names to
- addresses. This means that to be strictly legal, we must send out
- messages in the form "user@host.domain" ONLY FOR machines that are
- registered with SRI NIC. Machines that are not registered with the
- NIC must be "hidden" behind a relay machine, e.g.,
- user%unregistered_host@registered_host.domain. This, when MILNET folks
- reply to this, the mail passes through "registered_host.domain" first.
-
- Currently this "hiding" behind NIC registered hosts is performed by
- the "tcp" mailer.
-
- Since you don't want to register all the hosts at your site with
- the NIC (and they don't want you to!), the "tcpld" mailer was created.
- The idea here is that you KNOW all the hosts in your local domain
- use the nameserver, so there is no need to hide mail behind a NIC
- registered relay -- that would only slow things down. So the "tcpld"
- does not do any hiding of unregistered hosts behind a registered relay.
-
- Eventually the "tcpld" mailer will become the "smtp" mailer mentioned above.
-
- The "smtpuucp" mailer:
- ----------------------
-
- The "smtpuucp" mailer is another fun one. As time progresses, many
- hosts with whom one has UUCP connections join the Internet. Unfortunately,
- if the UUCP connection existed for any length of time, people are
- probably used to using it, complete with the bangist syntax that comes
- with UUCP. As a result, many sites elect to keep their
- UUCP connections even though they have TCP/IP connectivity to the sites
- in question. This turns out not be such a good idea because of the
- double-queuing incurred by UUCP, explained in the following example.
-
- For concreteness, consider the following scenario: ucbvax.Berkeley.EDU
- (UUCP host "ucbvax") and decvax.dec.com (UUCP host "decvax") have shared
- a cross county UUCP link that is heavily used by many people. Let's say
- that a piece of mail is routed through the ucbvax-decvax link via UUCP.
- The queueing process is:
-
-
- step host action
- ----- ----- ------
- 1 ucbvax incoming mail is accepted via UUCP
- 2 ucbvax uuxqt is queued to invoke sendmail.
- 3 ucbvax sendmail parses the message.
- 4 ucbvax sendmail passes the message to the UUCP
- mailer for delivery to decvax.
- 5 ucbvax message is placed in the outgoing UUCP queue for decvax
-
- 6 decvax uucico takes the message from ucbvax
- 7 decvax uuxqt is queued to invoke sendmail
- 8 decvax sendmail parses the message
- 9 decvax sendmail passes the message to someplace else.
-
- Note that the message transited the inbound UUCP queue on ucbvax, the sendmail
- queue on ucbvax, the outbound UUCP queue on ucbvax, the inbound UUCP queue
- on decvax, etc.
-
- Now, if decvax and ucbvax have SMTP connectivity, the session is more
- manageable:
-
- step host action
- ----- ----- ------
- 1 ucbvax incoming mail is accepted via UUCP
- 2 ucbvax uuxqt is queued to invoke sendmail.
- 3 ucbvax sendmail parses the message
- 4a ucbvax sendmail delivers it to decvax.dec.com via SMTP.
-
- a decvax sendmail accepts the message from ucbvax via SMTP.
- 8 decvax sendmail parses the message.
- 9 decvax sendmail passes it to someplace else.
-
- Note that old steps (5) and (7), the UUCP queueing, are avoided entirely.
-
- The only trick to the "smtpuucp" mailer is that even though it uses
- SMTP to communicate with its neighbors, it must use the UUCP syntax
- and rewriting rulesets so that the operation is transparent to the
- outside world. This is easy enough to do.
-
- Other functionality:
- -------------------
-
- Aside from the mailers supplied, the basic configuration files
- support the following features:
-
- * Domains. Addresses of the form "user@host.domain" are
- considered to be the basic type of address we deal with.
-
- * Fake domains. Addresses of the form:
-
- user@host.BITNET
- and
- user@host.CSNET
-
- are forwarded to a CSNET relay host and a BITNET relay host,
- respectively.
-
- Note: this feature exists for convenience. As CSNET and
- BITNET convert to domains, it will go away. In particular,
- "user@host.CSNET" is slated to get the axe in the next release.
-
- m4(1) OPTIONS USED IN THE .MC FILES:
- ------------------------------------
-
- The following options, from "most important" to "trivial", can be
- used to control what configuration file you get from running m4(1)
- on "cf/proto.mc". As explained earlier, the standard practice is to
- create an ".mc" file for a particular configuration that contains
- all the m4(1) macro definitions/flags you want, and then have
- that .mc file include "mc/proto.mc".
-
- Macro name Example (you must include the ` and ')!
- ---------- ---------------------------------------
-
- DOMAIN `DDBerkeley.EDU'
-
- This MUST be defined to be your Internet domain.
-
- INTERNET_RELAY `DAcad.Berkeley.EDU'
-
- If defined, this will be the machine behind which non-NIC registered
- hosts are hidden, resulting in addresses of the form
-
- user%host@internet_relay.domain
-
- e.g.,
-
- moore%prefect@cad.Berkeley.EDU
-
- If not defined, outgoing addresses will always be of the form
-
- user@host.domain
-
- regardless of whether "host.domain" is registered with the NIC.
-
- UUCP_NAME `DUucbcad'
-
- If defined, includes the UUCP mailer and assumes you have local
- UUCP connections. The UUCP_NAME macro is used to define your
- canonical UUCP hostname. See also: UUCP_ALIASES and UUCP_HOSTS_FILE.
-
- UUCP_ALIASES `CUucbcad cad'
-
- Used only if UUCP_NAME is defined, this macro lists any UUCP
- aliases for your machine. See also: UUCP_NAME and UUCP_HOSTS_FILE.
-
- UUCP_HOSTS_FILE `../sitedep/uucp.cad.m4'
-
- Used only if UUCP_NAME is defined. Defines class V of
- local UUCP hosts by including the appropriate m4 file. See also:
- UUCP_NAME and UUCP_ALIASES.
-
- UUCP_RELAY `DRcad.Berkeley.EDU'
-
- If defined, this will be the machine to which non-local UUCP traffic
- is forwarded. That is, any address that ends in ".UUCP" that is
- not listed in the V class (as defined by UUCP_HOSTS_FILE) will be
- forwarded to the UUCP_RELAY host via the "tcpld" mailer.
-
- UUCP_ONLY 1
-
- If defined, makes sure that no TCP/IP based mailers will be
- put in the resulting configuration file. Normally undefined.
-
- SMTPUUCP `../sitedep/smtpuucp.cad.m4'
-
- If defined, use SMTP to resolve certain UUCP connections (while
- keeping UUCP syntax). Should be defined to be a file that
- contains the list of pairs of UUCP names and their corresponding
- Internet names. See "machdep/smtpuucp.ucbvax.m4" for an example
- of what this should look like.
-
- BITNET_RELAY `DBjade.Berkeley.EDU'
-
- If defined, this will be the machine to which BITNET traffic
- (i.e., mail to user@host.bitnet) is forwarded. If not defined,
- addresses of the form "user@host.bitnet" will bounce.
-
- CSNET_RELAY `DCrelay.cs.net'
-
- If defined, this will be the machine to which CSNET traffic
- (i.e., mail to user@host.csnet) is forwarded. If not defined, addresses
- of that form will bounce.
-
- ARPAKLUDGE `1'
-
- If defined, this turns on a kludge to reduce mail load on your
- INTERNET_GATEWAY. What is done is the following: if mail is outgoing
- to a machine in the ".arpa" domain and we're not registered with the
- NIC, we hide ourselves behind our INTERNET_GATEWAY. If the machine
- to which mail is being delivered is NOT in the ".arpa" domain, we
- assume they use the domain name system and can reply to our address --
- hence, we don't hide anywhere.
-
- AN EXAMPLE OR TWO:
- ------------------
-
- Let's consider a hypothetical system at Foo, Inc. Foo, Inc. is on the
- ARPA Internet and is the proud owner of the domain "foo.com". Machines
- in "foo.com" exchange mail with other hosts on the Internet via SMTP.
- Foo, Inc. also has customers with whom they have UUCP links -- these
- links are all on the machine "uucp-gw.foo.com". Mail to any address
- that ends in ".UUCP" should be forwarded to "uucp-gw.foo.com". They
- also have a gateway to the bitnet through their local machine
- "bitnet-gw.foo.com"; mail to any address ending in ".bitnet" should go
- there. They intend to take advantage of the kind folks at CSNET by
- forwarding mail to "host.csnet" to the machine "relay.cs.net".
-
- The master configuration file for a generic machine on the corporate
- ethernet might look like this:
-
- define(DOMAIN, `DDfoo.com')
- define(UUCP_RELAY, `DRuucp-gw.foo.com')
- define(BITNET_RELAY, `DBbitnet-gw.foo.com')
- define(CSNET_RELAY, `DCrelay.cs.net')
- include(proto.mc)
-
- And that's it! The system manager at "foo.com" would simply install
- this in the "cf" subdirectory, add a production to the make file,
- and type "make foo.cf". This would run m4(1) on the .mc file and
- we're done.
-
- Now let's turn to the machine "uucp-gw.foo.com". It obviously needs
- to have the UUCP mailer compiled in, and it needs a list of UUCP
- neighbors with whom it is connected. Of course, it also needs a TCP/IP
- (SMTP) based mailer so it can talk to the rest of the company.
- On the UUCP network, "uucp-gw.foo.com" is known as "foo".
- The master configuration file might be:
-
- define(DOMAIN, `DDfoo.com')
- define(UUCP_NAME, `DUfoo')
- define(UUCP_ALIASES, `CUfoo')
- define(UUCP_HOSTS_FILE, `../sitedep/uucp.foo.m4')
- define(BITNET_RELAY, `DBbitnet-gw.foo.com')
- define(CSNET_RELAY, `DCrelay.cs.net')
- include(proto.mc)
-
- Note that we didn't define UUCP_RELAY here, since we ARE the UUCP relay.
-
- The file "../sitedep/uucp.foo.m4" contains a list of our UUCP neighbors:
-
- CV oink
- CV bletch
- CV spam
-
- indicating that "uucp-gw.foo.com" is directly connected to three other
- machines via UUCP: "oink", "bletch", and "spam."
-
-
- WHAT WILL BE CHANGING IN THE NEXT RELEASE:
- ------------------------------------------
-
- In the next release, the following things should change:
-
- 1. The MILNET should have gotten its act together. This means
- that the "tcp" mailer goes away. The "tcpld" mailer will
- be renamed "smtp". The "N" class (NIC registered hosts)
- gets axed. The ARPAKLUDGE and INTERNET_RELAY m4(1) options
- will disappear as well.
-
- 2. The CSNET "fake domain" (i.e., user@host.csnet) will cease
- to be supported.
-
- 3. The "smtp" mailer rulesets (currently 17/27) will be rewritten,
- along with much of rulesets 0 and 3.
-